﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using AForge.Video;
using AForge.Video.DirectShow;
using TwoGesture.Resources;

namespace TwoGesture
{
    public partial class FormUsuario : Form
    {
        private FilterInfoCollection videodivices = null;
        private VideoCaptureDevice videosources = null;
        private Size framesize;
        private int framerate;
        public Bitmap currentimagen;
        private ControlExamen ObjExamen = ControlExamen.InsCtrExamen();
        private int i = 0;
        

        public FormUsuario()
        {
            InitializeComponent();
            this.framesize = new Size(320, 240);
            this.framerate = 30;
            this.currentimagen = null;
        }

        private void btninicio_Click(object sender, EventArgs e)
        {
            this.star();
            
            this.btninicio.Visible = false;
            this.btnResultado.Visible = true;
            this.PreBienvenida.Visible = false;
            ObjExamen.ObtenerPregunta(lblDatoUsuaro.Text.ToString());
            this.LlenarPreguntas(ObjExamen.siguientePregunta());
            this.GbxPreguntas.Visible = true;
            this.LblPreguntaTraida.Visible = true;
        }

        private void LlenarPreguntas(PreguntasCuestionario pc)
        {
            
            if (i<20)
            {
                string pregunta = pc.descpregunta;
                if (pc.descpregunta.Length > 50)
                {
                    pregunta = pc.descpregunta.Substring(0, 50) + "\n" + pc.descpregunta.Substring(50);
                }
                this.LblPreguntaTraida.Text = pregunta;

                this.Rbtn1.Text = pc.descrespuesta1;
                this.rbtn2.Text = pc.decrespuesta2;
                this.rbtn3.Text = pc.decrespuesta3;
                this.rbtn4.Text = pc.decrespuesta4;
                i++;
                if (i == 20)
                {
                    this.btnResultado.Visible = false;
                    this.btnSiguiente.Visible = true;
                }
            }
            

        }

        public void FormPreguntas_Load(object sender,EventArgs e)
        {
            lblDatoUsuaro.Text = ObjExamen.IdUsuario();
        }

        private FilterInfoCollection getcamlist()
        {
            videodivices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            return videodivices;
        }

        public void star()
        {
            if (getcamlist().Count == 0)
                throw new
                Exception("No hay camara");
            else
            {
                videosources = new VideoCaptureDevice(videodivices[0].MonikerString);

                videosources.DesiredFrameSize = this.framesize;
                videosources.DesiredFrameRate = this.framerate;
                videosources.Start();
                videosources.NewFrame += new NewFrameEventHandler(video_newFrame);
            }

        }

        private bool imagenconvertcallback()
        {
            return false;
        }

        private void video_newFrame(object sender, NewFrameEventArgs eventArgs)
        {
            this.pboxcam.Image = eventArgs.Frame.GetThumbnailImage(framesize.Width, framesize.Height, new Image.GetThumbnailImageAbort(imagenconvertcallback), IntPtr.Zero);
        }

        public void stop()
        {
            if (!(videosources == null))
                if (videosources.IsRunning)
                {
                    videosources.SignalToStop();
                    videosources = null;
                }
            String path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);

            string archivo = path + "\\LogoTwoGestures.gif";

            this.pboxcam.ImageLocation = "\\LogoTwoGestures.gif";
        }

        private void cerrarSesionToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Login lg = new Login();
            lg.Show();
            this.Hide();
            
            
        }

        private void btnFin_Click(object sender, EventArgs e)
        {
            this.stop();
            this.btnSiguiente.Visible = false;
            this.btninicio.Visible = true;

            Login lg = new Login();
            lg.Show();
            this.Hide();
            
            
          
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            // Área cliente del formulario.
            //
            Rectangle r = this.ClientRectangle;

            // Punto intermedio del área cliente.
            //
            int c = r.Width / 2;

            // Establecemos la nueva posición del control Label.
            //
            this.LblPreguntaTraida.Location = new Point(c - this.LblPreguntaTraida.Width / 2, this.LblPreguntaTraida.Location.Y);

        }
   
        
           
        private void btnResultado_Click(object sender, EventArgs e)
        {
            this.LlenarPreguntas(ObjExamen.siguientePregunta());
        }

    }
}
